﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using hcom;
using System.Data;
using System.IO;
using System.Text;

namespace hcms.Admin
{
	public partial class ColumnList : System.Web.UI.Page
	{
		public Model model = Global.model;
		public DataRowCollection rows;
		public DataRowCollection posrows;	// 当前位置
		public string cid;
		public int page;					// 页号，从1开始
		public int pages;					// 页数
		protected void Page_Load(object sender, EventArgs e)
		{
			cid = Request["cid"];
			page = Request["page"] == null ? 1 : int.Parse(Request["page"]);
			string fixedpage = Request["fixedpage"];	// 特指页面
			if (Page.IsPostBack)	// 页面提交
			{
				switch (cmd.Value)
				{
					case "delete":
						delete();
						break;

					case "itemlist":
						onitemlist();
						break;

					default:
						throw (new Exception("不可识别的提交命令: " + cmd.Value));
				}
			}

			int pagerows = 30;		// 每页行数
			rows = model.getColumnRows(cid, false, ref page, pagerows, ref pages);
			if (cid != null && rows.Count == 0 && fixedpage != "column")	// 不是根目录(cid != null)，并且没有子栏目， 并且不是特指栏目时转到文档列表。
			{
				Response.Redirect("ArticleList.aspx?cid=" + cid);
				return;
			}
			posrows = model.getCurrentPos(cid);
		}

		/// <summary>
		/// 删除栏目， ** ## 同时删除子栏目及所有本栏目和子栏目文档，删除所有静态网页文件。
		/// </summary>
		private void delete()
		{
			// 删除静态文件，在每个cid的前面加上反斜杠，保证删除文件的唯一性。
			StringBuilder str = new StringBuilder( "\\" + sel.Value);
			str.Replace(",", ",\\");
			model.delFiles(str.ToString());

			// 删除数据库
			string[] arr = sel.Value.Split(',');
			int n = arr.Length;
			for (int i = 0; i < n; i++)
			{
				// 删除栏目及所有子栏目
				string strsql = string.Format(
					"UPDATE hcms_Columns SET colDeleted = 1 WHERE (colID LIKE '{0}%')",	// 包括子栏目
					arr[i]
					);
				model.da.Execute(strsql);

				// 删除所有子文档，一个文档对应多个栏目时，只删除指定栏目下的文档，不删除其它栏目的文档。
				strsql = string.Format(
					"UPDATE hcms_ArticleIDandColumnID SET acidDeleted = 1 WHERE (acidColumnID LIKE '{0}%')",	// 包括子栏目
					arr[i]
					);
				model.da.Execute(strsql);
			}

			ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "window.parent.refreshTree(); alert('删除完毕。');", true);
		}

		private void onitemlist()
		{
			switch (itemlist.Value)
			{
				case "栏目":
					break;
				case "文档":
					if (cid == null || cid == "")
					{
						ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('根目录下不能添加文档。')", true);
						itemlist.Value = "栏目";
					}
					else
						Response.Redirect("ArticleList.aspx?cid=" + cid);
					break;
				case "评论":
					Response.Redirect("CommentList.aspx?fixedpage=column&cid=" + cid);
					break;
				default:
					throw (new Exception("不可识别的列表项: " + itemlist.Value));
			}
		}

	}
}